package com.tac.controller.wms;

import com.github.pagehelper.PageInfo;
import com.tac.common.result.Result;
import com.tac.pojo.wms.MaterialApplication;
import com.tac.pojo.wms.MaterialApplicationMaterial;
import com.tac.service.wms.MaterialApplicationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RequestMapping("/materialApplication")
@Api(tags = "智能仓储WMS--领料申请")
@CrossOrigin
@RestController
public class MaterialApplicationController {
    /**
     * 领料申请是指在生产过程中，生产工单所需要的原材料和零部件等物料的申请和领取过程。
     * 通过领料申请，生产部门可以向物料部门发出领料请求，物料部门则根据领料申请的内容，将所需物料配送给生产部门，以确保生产工单的顺利进行。
     * 在ERP系统或WMS系统中，领料申请通常是通过物料管理模块来实现的。生产部门可以通过系统提交领料申请，物料部门则根据系统中的库存信息和领料申请，
     * 进行物料的配送和管理。通过系统化的领料申请流程，企业可以实现对生产过程中物料的精细化管理，提高生产效率和物料利用率，从而降低生产成本。
     */
    @Autowired
    private MaterialApplicationService materialApplicationService;


    //领料申请查询
    @GetMapping("/getList")
    @ApiOperation("领料申请查询")
    public Result<PageInfo<MaterialApplication>> getList(Integer pageNum, Integer pageSize, String receiveNumber, @DateTimeFormat(pattern = "yyyy-MM-dd") Date receiveTimeStart,@DateTimeFormat(pattern = "yyyy-MM-dd")  Date receiveTimeEnd, String applicant,
                                                         @DateTimeFormat(pattern = "yyyy-MM-dd") Date applicantTimeStart, @DateTimeFormat(pattern = "yyyy-MM-dd") Date applicantTimeEnd, String applicantStatus, String reviewed,
                                                         @DateTimeFormat(pattern = "yyyy-MM-dd") Date reviewedTimeStart, @DateTimeFormat(pattern = "yyyy-MM-dd") Date reviewedTimeEnd, String reviewedStatus){
       return materialApplicationService.getList(pageNum,pageSize,receiveNumber,receiveTimeStart,receiveTimeEnd,applicant
        ,applicantTimeStart,applicantTimeEnd,applicantStatus,reviewed
        ,reviewedTimeStart,reviewedTimeEnd,reviewedStatus);
    }

    //领料申请添加
    @PostMapping("/save")
    @ApiOperation("领料申请添加")
    public Result save(@RequestBody MaterialApplication materialApplication){
        return materialApplicationService.save(materialApplication);
    }
    //领料申请删除
    @DeleteMapping("/remove")
    @ApiOperation("领料申请删除")
    public Result remove(@RequestBody List<Integer> ids){
        return materialApplicationService.remove(ids);
    }
    //领料申请更新
    @PutMapping("/update")
    @ApiOperation("领料申请更新")
    public Result update(@RequestBody MaterialApplication materialApplication){
        return materialApplicationService.update(materialApplication);
    }


    //生产计划明细添加
    @ApiOperation("生产计划明细添加")
    @PostMapping("/save2")
    public Result save2(@RequestBody MaterialApplicationMaterial materialApplicationMaterial){
        return materialApplicationService.save2(materialApplicationMaterial);
    }
    //生产计划明细删除
    @ApiOperation("生产计划明细删除")
    @DeleteMapping("/remove2")
    public Result remove2(@RequestBody List<Integer> ids){
        return materialApplicationService.remove2(ids);
    }
    //生产计划明细更新
    @ApiOperation("生产计划明细更新")
    @PutMapping("/update2")
    public Result update2(@RequestBody MaterialApplicationMaterial materialApplicationMaterial){
        return materialApplicationService.update2(materialApplicationMaterial);
    }
}
